package com.mlfc.httpattack

import kotlin.random.Random

object PasswordGenerator {
    // 密码字符集配置
    private val uppercaseLetters = 'A'..'Z'
    private val lowercaseLetters = 'a'..'z'
    private val digits = '0'..'9'

    // 常用特殊字符（避免包含易混淆的字符）
    private val specialChars = "!@$%?`*".toList()

    // 所有字符集合并
    private val allChars = (uppercaseLetters + lowercaseLetters + digits + specialChars).toList()

    /**
     * 生成6-16位包含特殊字符的随机密码
     * @return 符合要求的密码字符串
     */
    fun generatePassword(): String {
        // 随机生成6-16位长度
        val length = Random.nextInt(6, 17)

        // 确保至少包含一个特殊字符
        val password = buildString {
            // 先添加一个随机特殊字符
            append(specialChars.random())

            // 填充剩余长度的随机字符（从所有字符集中选取）
            repeat(length - 1) {
                append(allChars.random())
            }
        }

        // 打乱字符顺序，避免特殊字符固定在首位
        return password.toCharArray().apply { shuffle() }.concatToString()
    }
}